package Utils;

import Utils.io.IOUtils;

import java.io.File;
import java.io.IOException;

/**
 * 处理file system的工具类
 *
 * @author d11yu
 */
public final class FsUtils {
    private FsUtils() {
    }

    /**
     * 获取绝对路径（不推荐使用，建议使用getCanonicalPath），例如：D:\IdeaProjects\MyUtility\..\c3p0-config.xml
     *
     * @param path
     * @return
     */
    @Deprecated
    public static String getAbsolutePath(String path) {
        return new File(path).getAbsolutePath();
    }

    /**
     * 获取规范路径（推荐使用），例如：[Windows系统下] D:\IdeaProjects\MyUtility\resources\c3p0-config.xml
     *
     * @param path
     * @return
     */
    public static String getCanonicalPath(String path) {
        try {
            return new File(path).getCanonicalPath();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取文件名（包括后缀，但不包括目录路径）
     *
     * @param path
     * @return
     */
    public static String getName(String path) {
        return new File(path).getName();
    }

    /**
     * 获取文件名（包括后缀，但不包括目录路径）
     *
     * @param file
     * @return
     */
    public static String getName(File file) {
        return file.getName();
    }

    /**
     * 获取文件名，不包括后缀。
     *
     * @param path
     * @return
     */
    public static String getNameExcludingSuffix(String path) {
        String name = getName(path);
        return name.substring(0, name.lastIndexOf("."));
    }

    /**
     * 获取文件名的后缀（不包括“.”）
     *
     * @param path 文件路径
     * @return 返回文件名的后缀
     */
    public static String getSuffix(String path) {
        return path.substring(path.lastIndexOf(".") + 1);
    }

    /**
     * 获取目录路径
     *
     * @param path
     * @return
     */
    public static String getDirectory(String path) {
        return new File(path).getParent();
    }

    /**
     * 创建指定的目录
     *
     * @param path 要创建的文件夹地址
     * @return 返回1：成功创建文件夹；-1：文件夹创建失败；0：文件夹已存在
     */
    public static Integer createDir(String path) {
        return IOUtils.createDir(path);
    }

    /**
     * 获取启动路径
     *
     * @return
     */
    public static String getAppStartUpPath() {
        // 两种写法都可以
//        return new File("").getAbsolutePath();
        return System.getProperty("user.dir");
    }

    /**
     * 文件重命名
     *
     * @param file
     * @param newFullName
     */
    public static void rename(File file, String newFullName) {
        file.renameTo(new File(newFullName));
    }

    /**
     * 文件重命名
     *
     * @param fullName
     * @param newFullName
     */
    public static void rename(String fullName, String newFullName) {
        rename(new File(fullName), newFullName);
    }
}
